import config from './../config/config.js'

export default {
    //获得storage中的所有数据
    //key: managers
    //
    //value(存的数据 JSON格式的字符串):
    //{
    //  userInfo:{id:1,name:"scott"},
    //  depts:[{id:1,name:"开发部"}]
    //}
    getStorage() {
        //1 根据项目名称获得项目保存的数据 
        //    刚开始的时候storage中没有存储项目中的数据,如果项目中没有存储数据返回 "{}"
        //2 将项目中保存的数据(JSON格式的字符串)转为对象返回
        return JSON.parse(window.localStorage.getItem(config.namespace) || "{}")
    },
    //向storage中保存数据
    setItem(key, value) {
        //核心思路:向原来storage中保存的数据里添加新的数据（key,value)
        let storage = this.getStorage() //获得原来storage中的数据
        //向原来的storage(对象)中添加数据(向对象中添加新的属性并且给属性赋值)
        storage[key] = value
        //将storage对象转为JSON格式的字符串存到storage中
        //key: 项目名称   value: storage对象的JSON格式的字符串
        window.localStorage.setItem(config.namespace, JSON.stringify(storage))
    },
    //根据key获得storage中存储的value值
    getItem(key) {
        //核心思路:从storage中根据key获得对应的值ss
        //this.getStorage() //获得原来storage中的对象信息
        return this.getStorage()[key]
    },
    //根据key 删除storage中存储的value值
    clearItem(key) {
        //获得当前项目中所有storage的数据(对象)
        let storage = this.getStorage()
        //从对象中删除key属性
        delete storage[key]
        //将剩余的的数据保存到当前项目对应storage中
        window.localStorage.setItem(config.namespace, JSON.stringify(storage))
    },
    clearAll() {
        //清空当前项目对应storage中的所有数据
        window.localStorage.clear()
    }
}